Developing voice-over-Internet protocol (VOIP) applications to run on mobile phones or other limited resource devices (e.g., tablets, personal digital assistants) presents a number of challenges. These challenges are even greater when the VOIP applications are to scale so that they are operational on low end hardware devices having limited resources as well as high end hardware devices having greater resources, particularly when the quality of the VOIP call user experience is to remain relatively high in all cases.
One peculiarity of a mobile phone as a platform for a VOIP application, as opposed to a personal computer, tablet, or the like, is that a mobile phone has a pre-existing telephony (e.g., cellular) module already built into it. Thus, when developing a VOIP application for a mobile phone, issues arise such as switching between different types of calls, which do not arise when a personal computer or tablet is used as a platform for the VOIP application. More generally, it becomes desirable to integrate the user experience of receiving and placing all types of calls, including VOIP calls and cellular or other types of calls that are native to the mobile phone.
Another problem that arises when developing a VOIP application that does not arise with other types of calls native to the mobile phone or other limited resource devices concerns the sharing of hardware resources (e.g., processing capability, memory) among various applications. If, for example, a user switches to another application while on a VOIP call, hardware resources are allocated to the other application which may negatively impact the VOIP call user experience.